package com.cskaoyan._02extends._02relation;

/**
 * @description:
 * @author: 景天
 * @date: 2023/2/8 11:24
 **/
/*
父子类之间的关系: 子类is-a父类的关系

- 实际代码书写角度解释：

  1. 在正常情况下，创建谁的对象，就用谁的引用接收。
  1. 但是在具有父子类关系的两个类中，存在用父类引用接收子类对象的情况。
  1. 在这种情况下，子类对象被当成了父类对象去使用了。
  1. 即子类可以看成就是一个父类，也就是"is-a"关系。

- 从数据类型的定义角度解释：

  1. 数据类型是 一组数据 + 基于数据的操作
  2. 引用数据类型是 成员变量的集合 + 成员方法的集合
  3. 子类通过继承父类，得到了父类的所有成员，从数据类型上来说，
  子类就覆盖了父类的成员，具有了父类的功能。
  4. 子类可以当做父类去使用，也就是子类"is-a"父类
 */
public class Demo {
    public static void main(String[] args) {
        // 正常情况下 ,创建谁的对象就用谁的引用接收
        Father father = new Father();
        Son son = new Son();

        // 父类引用接收子类对象(父类引用指向子类对象)
        // 表示子类可以被当做父类来使用(苹果是水果)
        Father fs = new Son();

        // 但是不能用子类的引用接收父类的对象
        // 表示把一个父类对象当做子类对象使用(水果是苹果)
        // Son sf = new Father();
    }
}

class Father{

}
class Son extends Father{

}